/**
 * 日期时间脚本库方法列表：
 * （1）Fun GetTimeNow 获取当前时间 2008-08-08
 * （2）Fun GetMonthNow 获取当前月份 2008-08
 * （3）Fun GetMonthNow1 获取当前月份 2008-8
 * （4）Fun GetYearNow 获取当前年份 2008
 * （5）Fun compareDate 日期比较大小
 * （6）Fun FormatDate 格式化日期
 */

/**
 * 
 * 获取当前时间
 */
export function GetTimeNow(hasTime = false) {
    var myDate = new Date();
    //获取当前年
    var year = myDate.getFullYear();
    //获取当前月
    var month = myDate.getMonth() + 1;
    //获取当前日
    var date = myDate.getDate();
    var h = myDate.getHours(); //获取当前小时数(0-23)
    var m = myDate.getMinutes(); //获取当前分钟数(0-59)
    var s = myDate.getSeconds();
    var now = year + '-' + getNow(month) + "-" + getNow(date)
	if(hasTime) now += " " + getNow(h) + ':' + getNow(m) + ":" + getNow(s);
    return now;
}
//获取本月
export function GetMonthNow() {
    var myDate = new Date();
    //获取当前年
    var year = myDate.getFullYear();
    //获取当前月
    var month = myDate.getMonth() + 1;
    var now = year + '-' + getNow(month);
    return now;
}
//获取今年
export function GetYearNow() {
    var myDate = new Date();
    //获取当前年
    var year = myDate.getFullYear();
    var now = year;
    return now;
}
//获取本月，返回：2019-8
export function GetMonthNow1() {
    var myDate = new Date();
    //获取当前年
    var year = myDate.getFullYear();
    //获取当前月
    var month = myDate.getMonth() + 1;
    return (year + '-' + month);
}

export function getNow(s) {
    return s < 10 ? '0' + s : s;
}

/**
 * 时间比较>
 * @param string t1 日期
 * @param string t2 日期
 */
export function CompareDate(t1, t2) {
    return new Date(t1.replace(/-/g, "/")) > new Date(t2.replace(/-/g, "/"));
}

/**
 * 日期格式转换
 * @param Boolean|String true=显示时间，false=不显示时间  
 */
export function FormatDate(date, format = 'yyyy-MM-dd') {
    let value;
    let fmt = format
    if(date == '0' || !date){
		return '';
	}else if (typeof date === 'string') {
        const temp = date
        value = new Date(Date.parse(temp.replace(/-/g, '/')))
    } else if (date instanceof Date) {
        value = date
    } else if (/^\d{10}$/.test(String(date))) {
        // 时间戳 10位
        value = new Date(Number(date) * 1000)
    } else if (/^\d{13}$/.test(String(date))) {
        // 时间戳 13位
        value = new Date(date)
    } else {
        return ''
    }
    const opt = {
        'y+': value.getFullYear().toString(), // 年
        'M+': (value.getMonth() + 1).toString(), // 月
        'd+': value.getDate().toString(), // 日
        'h+': value.getHours().toString(), // 时
        'm+': value.getMinutes().toString(), // 分
        's+': value.getSeconds().toString(), // 秒
    }
    for (const k in opt) {
        const ret = new RegExp('(' + k + ')').exec(fmt)
        if (ret) {
            if (/(y+)/.test(k)) {
                fmt = fmt.replace(ret[1], opt[k].substring(4 - ret[1].length))
            } else {
                fmt = fmt.replace(ret[1], ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0'))
            }
        }
    }
    return fmt
}

export function GetTime(isMilli = false){
	let time = (new Date()).getTime();
	if(isMilli) time = Math.floor(time/1000);
	return time;
}
//获取两日期之间日期列表函数
export function getdiffdate(stime,etime){
	if (typeof stime == 'string' && typeof etime === 'string') {
		stime = new Date(stime.replace(/-/g, '/')).getTime();
		etime = new Date(etime.replace(/-/g, '/')).getTime();
	}
    //初始化日期列表，数组
    var diffdate = new Array();
    var i=0;
    //开始日期小于等于结束日期,并循环
    while(stime<=etime){
        diffdate[i] = FormatDate(stime, 'yyyy-MM-dd');
        //增加一天时间戳后的日期
        var next_date = stime + (24*60*60*1000);
        stime = next_date
        //增加数组key
        i++;
    }
	return diffdate
}
